refactor!: remove Go SDK (closes #481)#486
Merged
Merged
Conversation
The cgo bridge between Rust's C ABI and Go's runtime carries per-call overhead that masks the upstream throughput this SDK is engineered for. Users who need Go bindings can build their own cgo wrapper against the unchanged C ABI in `crates/ffi/` — header at `sdks/cpp/include/thetadx.h`, all FFI types and free fns exported as `tdx_*` symbols. Removes: - `sdks/go/` (entire directory: 30 source files) - Per-Go build_support modules + templates: `ticks/go.rs`, `fpss_events/go_structs.rs`, `sdk_surface/go.rs`, `endpoints/render/go.rs`, `endpoints/render/go_validate.rs`, all `templates/go/`, `templates/validate_go/`, `templates/go_structs/` - Go-specific `tick_schema.toml` render rows (`go_struct`, `go_converter`) on every `[types.X.render]` block - Go-specific `sdk_surface.toml` targets (`go_fpss`, `go`) and the entire `[[go_ffi.tls_reader_markers]]` SSOT block - `MethodTarget::GoFpss`, `UtilityTarget::Go`, `GoFfiSpec`, `TlsReaderMarker`, plus every Go-only helper in `endpoints/helpers.rs` and `sdk_surface/common.rs` - CI Go SDK jobs in `ci.yml` and `live.yml` (`actions/setup-go`, cgo wrapper steps), Go module from `dependabot.yml`, and the `sdks/go/` rules in `.gitattributes` Extracts shared `(size, align, offset)` math used by the C++ and tdbe layout-assert emitters into a neutral `ticks/layout.rs` module. Refreshes README, CONTRIBUTING, ROADMAP, the docs-site, and the in-repo `docs/` tree. Mirrors `CHANGELOG.md` -> `docs-site/docs/changelog.md`. The C ABI in `crates/ffi/` is unchanged — third-party cgo / Swift / Zig wrappers continue to work against the same `extern "C"` surface. Closes #481.
c9cafdd to
0671c4e
Compare
The script asserted `sdks/README.md` contains a sentence about Windows being validated with the GNU Rust target — that sentence lived inside a Go SDK bullet (cgo links through MinGW). Go SDK removed in this PR; sentence removed from the README; the assertion is now stale and the \`Extended Surfaces\` CI gate fails on it. Drop the assertion. C++ and Python/TS Windows validation is already documented in the surviving bullets.
The agreement-test fixtures wrote artifacts under producer key "go", but `scripts/validate_agreement.py::LANGS` only reads python/cli/cpp after the Go SDK removal. The disagreement-detection tests therefore silently passed (the diff engine ignored the "go" artifact carrying the disagreement). Bulk-replace "go" -> "cli" for inert fixture rows; rewrite the two disagreement-anchor tests so the disagreeing artifact is written by a producer the loop does not subsequently overwrite. 29/29 tests pass.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Removes the Go SDK entirely. The cgo bridge between Rust's C ABI and Go's runtime carries per-call overhead that masks the upstream throughput this SDK is engineered for. Users who need Go bindings can build their own cgo wrapper against the unchanged C ABI in
crates/ffi/— header atsdks/cpp/include/thetadx.h, all FFI types and free fns exported astdx_*symbols.What was deleted
sdks/go/source filescrates/thetadatadx/build_support/Go modules + templates.rs, 13.tmpl)tick_schema.tomlGo-prefixed render rows (go_struct,go_converter)sdk_surface.tomlGo target entries (go_fpss,go)[[go_ffi.tls_reader_markers]]block (5 entries)setup-gosetups; ci.yml:setup-gosetups + thego test ./...block insdk-bindingsdependabot.ymlGo module entry.gitattributessdks/go/rules*_go*.rssource filesNet change: 113 files touched, ~310 insertions, ~11,777 deletions.
The shared
(size, align, offset)math previously living inticks/go.rs(used by the C++ static-assert emitter and tdbe layout-guard emitter) was extracted into a neutralcrates/thetadatadx/build_support/ticks/layout.rsmodule — neither emitter is Go-specific, the helper just happened to live there for historical reasons.Supported integration path going forward
The C ABI in
crates/ffi/is unchanged. Third-party cgo / Swift / Zig / Nim / etc. wrappers continue to work against the sameextern "C"surface. Header atsdks/cpp/include/thetadx.h. The TypeScript and Python SDKs continue to ship as pre-built binaries (napi-rs and PyO3 abi3).Validation
Local CI gate (all clean):
cargo fmt --all -- --checkcargo clippy --workspace --all-targets -- -D warningscargo test --workspacecargo deny check— advisories, bans, licenses, sources all okcargo run -p thetadatadx --bin generate_sdk_surfaces --features config-file -- --check— no driftcargo check --manifest-path tools/mcp/Cargo.toml --lockedcargo clippy --manifest-path tools/mcp/Cargo.toml --all-targets -- -D warningscargo test --manifest-path tools/mcp/Cargo.toml --no-runcargo check --manifest-path tools/server/Cargo.toml --lockedcargo check --manifest-path sdks/python/Cargo.toml --lockedcargo check --manifest-path sdks/typescript/Cargo.toml --lockedTest plan
frames_generated.rs,tick_classes.rs(Python + TS), andfpss_event_structs.h.inc(C++) — their content must come from the SSOT only.Closes #481.